<!DOCTYPE HTML>
<html>

<head>
	<link rel="bookmark"  type="image/x-icon"  href="/img/logo.jpg"/>
	<link rel="shortcut icon" href="/img/logo.jpg">
	
			    <title>
    北望你的安
    </title>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no" />
    <link rel="stylesheet" href="/css/mic_main.css" />
    <link rel="stylesheet" href="/css/dropdownMenu.css" />
    <meta name="keywords" content="北望你的安" />
    
    	<script async src="//busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js"></script>
	 
    <noscript>
        <link rel="stylesheet" href="/css/noscript.css" />
    </noscript>
    <style type="text/css">
        body:before {
          content: ' ';
          position: fixed;
          top: 0;
          background: url('/img/bg.jpg') center 0 no-repeat;
          right: 0;
          bottom: 0;
          left: 0;
          background-size: cover; 
        }
    </style>

			    
  


    <script src="/js/jquery.min.js"></script>
    <script src="/js/jquery.scrollex.min.js"></script>
    <script src="/js/jquery.scrolly.min.js"></script>
    <script src="/js/skel.min.js"></script>
    <script src="/js/util.js"></script>
    <script src="/js/main.js"></script>
	
</head>
    
		
<!-- Layouts -->



<!--  代码渲染  -->
<link rel="stylesheet" href="/css/prism_coy.css" />
<link rel="stylesheet" href="/css/typo.css" />
<!-- 文章页 -->
<body class="is-loading">
    <!-- Wrapper 外包 s-->
    <div id="wrapper" class="fade-in">
        <!-- Intro 头部显示 s -->
        <!-- Intro 头部显示 e -->
        <!-- Header 头部logo start -->
        <header id="header">
    <a href="/" class="logo">Krystalan</a>
</header>
        <!-- Nav 导航条 start -->
        <nav id="nav" class="special" >
            <ul class="menu links" >
			<!-- Homepage  主页  --> 
			<li >
	            <a href="/" rel="nofollow">主页</a>
	        </li>
			<!-- categories_name  分类   --> 
	        
	        <li class="active">
	            <a href="#s1">分类</a>
	                    <ul class="submenu">
	                        <li>
	                        <a class="category-link" href="/categories/%E5%BC%BA%E5%8C%96%E5%AD%A6%E4%B9%A0/">强化学习</a></li><li><a class="category-link" href="/categories/%E6%95%B0%E5%AD%A6/">数学</a></li><li><a class="category-link" href="/categories/%E7%AE%97%E6%B3%95/">算法</a></li><li><a class="category-link" href="/categories/%E8%87%AA%E7%84%B6%E8%AF%AD%E8%A8%80%E5%A4%84%E7%90%86/">自然语言处理</a></li><li><a class="category-link" href="/categories/%E9%9A%8F%E7%AC%94/">随笔</a>
	                    </ul>
	        </li>
	        
	        <!-- archives  归档   --> 
	        
	        
		        <!-- Pages 自定义   -->
		        
		        <li>
		            <a href="/tags/" title="标签">
		                标签
		            </a>
		        </li>
		        
		        <li>
		            <a href="/gallery/" title="相册">
		                相册
		            </a>
		        </li>
		        


            </ul>
            <!-- icons 图标   -->
			<ul class="icons">
                    
                    <li>
                        <a title="github" href="https://github.com/krystalan" target="_blank" rel="noopener">
                            <i class="icon fa fa-github"></i>
                        </a>
                    </li>
                    
                    <li>
                        <a title="500px" href="https://www.zhihu.com/people/krystalzhu-an" target="_blank" rel="noopener">
                            <i class="icon fa fa-500px"></i>
                        </a>
                    </li>
                    
			</ul>
</nav>

        <div id="main" >
            <div class ="post_page_title_img" style="height: 25rem;background-image: url(/img/15.jpg);background-position: center; background-repeat:no-repeat; background-size:cover;-moz-background-size:cover;overflow:hidden;" >
                <a href="#" style="padding: 4rem 4rem 2rem 4rem ;"><h2 >融入知识的摘要生成</h2></a>
            </div>
            <!-- Post -->
            <div class="typo" style="padding: 3rem;">
                <p>本文主要总结一下融入知识的一些摘要生成工作。</p>
<h1 id="1-用知识图谱提高生成式摘要的事实正确性"><a href="#1-用知识图谱提高生成式摘要的事实正确性" class="headerlink" title="1.用知识图谱提高生成式摘要的事实正确性"></a>1.用知识图谱提高生成式摘要的事实正确性</h1><blockquote>
<p>相关推文：<u><a href="https://zhuanlan.zhihu.com/p/115155771" target="_blank" rel="noopener">《香侬读 | 当知识图谱遇上文本摘要：保留抽象式文本摘要的事实性知识》</a></u></p>
</blockquote>
<h2 id="1-1-论文名称"><a href="#1-1-论文名称" class="headerlink" title="1.1 论文名称"></a>1.1 论文名称</h2><p><u><a href="https://arxiv.org/abs/2003.08612" target="_blank" rel="noopener">Boosting Factual Correctness of Abstractive Summarization with Knowledge Graph</a></u>    </p>
<h2 id="1-2-动机"><a href="#1-2-动机" class="headerlink" title="1.2 动机"></a>1.2 动机</h2><p>直接使用不包含知识的生成式摘要模型，有可能生成的摘要与原文中的语义产生冲突。例如给定一篇文章“小王是一个喜欢给弟弟送礼物的好哥哥”，生成的摘要可能是“小王是个弟弟”。这样便出现了知识性错误。    </p>
<h2 id="1-3-模型"><a href="#1-3-模型" class="headerlink" title="1.3 模型"></a>1.3 模型</h2><p><img src="/images/KGforSUM/1.jpg" alt="模型"><br>（1）首先模型的最左边是transformer encoder用于编码文章。<br>（2）模型的最右边是使用了Stanford OpenIE工具来提取文章的三元组，例如一句话“Born in a town, she took the midnight train”会提取出三元组（she，took，midnight train）<br>提取出的三元组中每个元素建模成一个节点，相邻元素之间用一条边连接，以此建立一个无向图模型。例如上例，she、took、midnight_train分别是三个节点，she-took，took-midnight_train是两条边。建立无向图之后用图注意力网络获取每个节点的embedding，每个节点的初试embedding是通过BiLSTM得到的。<br>最终每个节点的embedding可表示为：<br><img src="/images/KGforSUM/2.jpg" alt="节点embedding"><br>其中N代表通过图注意力网络迭代了几轮（论文实验中设置为2），|V|是节点个数。<br>（3）模型的中间部分是融合知识并解码的步骤<br>首先我们假设已经解码出的token的embedding是{yi}（i from 1 to t），文章的编码是{xi}（i from 1 to m）<br>那么我们将{yi}通过一层self-attention，把{xi}和{yi}通过一层inter-attention就可以得到利用注意力机制融合了文章编码的解码特征{si}（i from 1 to t）。<br>之后我们的目的是将si和ej进行融合，具体步骤如下：<br><img src="/images/KGforSUM/3.jpg" alt="融合"><br>ui即为融合之后的向量，表面上看ui的计算主体是ej，si只不过是在计算不同知识的权重的时候使用，但其可以通过residual net不断传播进而被使用。得到ui之后，将其通过Layer Normalization和FFN之后便可以得到最终的向量zi。<br>之后再使用zi向量去计算Pcopy值，代表原文分布占最终分布的权重，原文分布γcopy就是最后一层transformer decoder所解码出的分布。而生成分布γgen是直接用zt经过embedding矩阵得到的分布。最终分布的计算方式如下：<br><img src="/images/KGforSUM/4.jpg" alt="最终分布"><br>这样就在解码的每一步中融入了文章的知识以改进生成的摘要出现事实错误的情况。  </p>
<h2 id="1-4-实验结果"><a href="#1-4-实验结果" class="headerlink" title="1.4 实验结果"></a>1.4 实验结果</h2><p><img src="/images/KGforSUM/5.jpg" alt="result"><br>实验结果是在CNN/DailyMail上用人工评估方式进行的，可以看出在事实性上面有所提高。<br><img src="/images/KGforSUM/6.jpg" alt="result"><br>自动评估指标的效果不是特别好。  </p>
<h1 id="2-基于图转换器从知识图谱中生成文本"><a href="#2-基于图转换器从知识图谱中生成文本" class="headerlink" title="2.基于图转换器从知识图谱中生成文本"></a>2.基于图转换器从知识图谱中生成文本</h1><h2 id="2-1-论文名称"><a href="#2-1-论文名称" class="headerlink" title="2.1 论文名称"></a>2.1 论文名称</h2><p><u><a href="https://arxiv.org/abs/1904.02342" target="_blank" rel="noopener">Text Generation from Knowledge Graphs with Graph Transformers</a></u><br>中文翻译版：<a href="https://blog.csdn.net/ARPOSPF/article/details/104241533" target="_blank" rel="noopener">https://blog.csdn.net/ARPOSPF/article/details/104241533</a><br>code&amp;data：<a href="https://github.com/rikdz/GraphWriter" target="_blank" rel="noopener">https://github.com/rikdz/GraphWriter</a>  </p>
<h2 id="2-2-动机"><a href="#2-2-动机" class="headerlink" title="2.2 动机"></a>2.2 动机</h2><p>很多现有的工具，能直接把一段文字通过信息抽取搞成一个知识图谱（例如在第一节论文中使用了斯坦福的OpenIE工具为文章构建KG），那么能不能通过文章标题和KG直接产生一个摘要？<br>为此作者专门还去构建了一个数据集AGENDA，该数据集就是由科技论文的标题和摘要以及摘要提取出的KG组成的，意在通过标题和KG训练一个能产生摘要的model。我们可以来看一下数据集：<br><img src="/images/KGforSUM/7.jpg" alt="AGENDA">    </p>
<h2 id="2-3-模型"><a href="#2-3-模型" class="headerlink" title="2.3 模型"></a>2.3 模型</h2><p><img src="/images/KGforSUM/8.jpg" alt="mode"><br>总体上还是一个encoder-decoder框架。<br>Title Encoder用于提取标题的特征，Graph Transformer用于提取KG的特征。<br>（1）首先写把断开连接的标记图转换为连接的标记图，以用于基于注意力的编码器。<br><img src="/images/KGforSUM/9.jpg" alt="mode"><br>如图所示，其中G是一个全局的上下文节点，然后使用作者提出的Graph Transformer对每个顶点习得一个表示Vi。其中Vi的初始值是通过BiLSTM得到的。  </p>
<p>来让我们细看一下Graph Transformer的整个过程：<br><img src="/images/KGforSUM/13.jpg" alt="mode">  </p>
<p>首先经历了多头注意力机制和残差网络，公式如下，N就代表头数：<br><img src="/images/KGforSUM/14.jpg" alt="mode"><br><img src="/images/KGforSUM/15.jpg" alt="mode"><br>α就是通过KQV向量计算的self-attention权重。<br>之后再通过层归一化和FFN可计算得到迭代后的表示。</p>
<p>（2）标题的表示也是通过BiLSTM获得的。<br>（3）解码<br><img src="/images/KGforSUM/10.jpg" alt="mode"><br>其中ht是当前解码器的隐层向量，cg是融入ht之后的KG表示，cs是融入ht之后的文章标题表示（计算方式与上图中cg相似，但未给出）。通过cg和cs可以得到当前步最终的上下文表示ct = cg||cs（concatenation）<br><img src="/images/KGforSUM/11.jpg" alt="mode"><br>最后使用ht与ct获得copy的概率，并计算最终的分布。  </p>
<h2 id="2-4-实验结果"><a href="#2-4-实验结果" class="headerlink" title="2.4 实验结果"></a>2.4 实验结果</h2><p><img src="/images/KGforSUM/12.jpg" alt="result"><br>左边是自动评估，右边是人工评估。</p>
<h1 id="3-使用概念指针网络的生成式摘要"><a href="#3-使用概念指针网络的生成式摘要" class="headerlink" title="3.使用概念指针网络的生成式摘要"></a>3.使用概念指针网络的生成式摘要</h1><h2 id="3-1-论文名称"><a href="#3-1-论文名称" class="headerlink" title="3.1 论文名称"></a>3.1 论文名称</h2><p>2019 EMNLP：<u><a href="https://arxiv.org/abs/1910.08486" target="_blank" rel="noopener">Concept Pointer Network for Abstractive Summarization</a></u><br>CODE：<a href="https://github.com/wprojectsn/codes" target="_blank" rel="noopener">https://github.com/wprojectsn/codes</a></p>
<h2 id="3-2-动机"><a href="#3-2-动机" class="headerlink" title="3.2 动机"></a>3.2 动机</h2><p>利用知识去生成更高语义的摘要，值得一提的是，前面两篇论文中利用知识的方法都是从原文中构建了知识图谱，再利用图表示来获得知识嵌入，而本篇则是用到了外界的知识，即不为从本文中提取的知识。  </p>
<h2 id="3-3-模型"><a href="#3-3-模型" class="headerlink" title="3.3 模型"></a>3.3 模型</h2><p><img src="/images/KGforSUM/16.jpg" alt="model">   </p>
<h3 id="3-3-1-Encoder-Decoder"><a href="#3-3-1-Encoder-Decoder" class="headerlink" title="3.3.1 Encoder-Decoder"></a>3.3.1 Encoder-Decoder</h3><p>首先假设原文单词序列为{xi}（i from 1 to n），通过BiLSTM获得包含上下文特征的单词表示序列{hi}（i from 1 to n）。假设当前处于t步，且当前解码器隐层特征为st，那么可以得到当前步基于注意力机制的原文表示：<br><img src="/images/KGforSUM/17.jpg" alt="model"><br>由此进而可以计算出当前步直接解码出的单词概率（在整个词表上）：<br><img src="/images/KGforSUM/18.jpg" alt="model"><br>这属于产生新词的分布，该分布的概率计算如下：<br><img src="/images/KGforSUM/19.jpg" alt="model">   </p>
<h3 id="3-3-2-Concept-Pointer-Generator"><a href="#3-3-2-Concept-Pointer-Generator" class="headerlink" title="3.3.2 Concept Pointer Generator"></a>3.3.2 Concept Pointer Generator</h3><p>这个步骤对应模型图的下部分，指针网络的作用就是复制原文中的词汇，但是本文还融入了知识，因此称为概念指针生成器。<br>首先介绍了<u><a href="https://concept.research.microsoft.com/Home/API" target="_blank" rel="noopener">Microsoft concept graph</a></u>，这个网页提供了API，我们可以输入一个实体，该服务会返回给我们这个实体对应的一些概念，例如下例，我们输入的是apple：  </p>
<blockquote>
<p><a href="https://concept.research.microsoft.com/api/Concept/ScoreByProb?instance=apple&amp;topK=10" target="_blank" rel="noopener">https://concept.research.microsoft.com/api/Concept/ScoreByProb?instance=apple&amp;topK=10</a>  </p>
</blockquote>
<p><img src="/images/KGforSUM/20.jpg" alt="model"><br>我们可以看到“apple”的概念中41.5%属于一个水果，28.6%属于一个公司，等等。<br>但我们要分别一个单词到底属于什么概念，不能仅仅只考该网页提供的服务来决定，我们在参考这个网页给的概率的同时也应该结合上下文自己评估一个可能性出来，于是便有了：<br><img src="/images/KGforSUM/21.jpg" alt="model"><br>这个β代表第i个词与它的第j个概念的权重，c代表第i个词的第j个概念，最后我们还应该结合网页服务所提供的概率P（c）：<br><img src="/images/KGforSUM/22.jpg" alt="model"><br>由此我们得到了文章第i个词，和它所有概念间的最终权重（结合了网页给的权重和自己经过上下文计算得到的权重）<br>那么对于第i个词来说，它的概念分布就是：<br><img src="/images/KGforSUM/23.jpg" alt="model"><br>有了每个词的概念分布和当前步不同单词的attention分布（α，详见Encoder-Decoder部分的讲解），我们就可以计算concept分布，该分布的计算需要用到attention分布。<br><img src="/images/KGforSUM/24.jpg" alt="model"><br>首先第一行就是我们在前一步中所讲的Encoder-Decoder中产生的词表分布，接着第二行的红框部分是attention权重，是α建立的，代表当前步骤上对原文中每个词的focu程度，而紫框部分则是concept分布，是在α的基础上乘以一个P。这个P的计算方法作者分别尝试了一下两种：<br>（1）最大化选取<br><img src="/images/KGforSUM/25.jpg" alt="model"><br>即在我们计算出的概念的综合权重中最大化选择一个值最大的，但需要注意的是，最大化的值并不是综合的权重，而是不考虑网页服务提供的概率仅考虑当前步计算出的概率的最大化的那个概念在综合权重中的值。说的很绕口，但其实看一下式子就明白了。<br>（2）随机选取<br><img src="/images/KGforSUM/26.jpg" alt="model"><br>顾名思义，随机选取，没什么好说的  </p>
<p>所以我们可以看到该文工作在融合知识层面上，只是让概念知识影响了copy原文词表中的权重。  </p>
<h2 id="3-4-实验结果"><a href="#3-4-实验结果" class="headerlink" title="3.4 实验结果"></a>3.4 实验结果</h2><p><img src="/images/KGforSUM/27.jpg" alt="result"><br>其中+RL的优化目标是：<br><img src="/images/KGforSUM/28.jpg" alt="model"><br>其求助了强化学习的思想，直接优化ROUGE，r函数是奖励函数。<br>+DS的意思是训练集可能和测试集的分布不太一样，所以用KL散度去衡量了训练集和测试集的差距，那么训练的目标就变成了：<br><img src="/images/KGforSUM/29.jpg" alt="model">  </p>
<h1 id="4-基于实体常识表示的生成式摘要"><a href="#4-基于实体常识表示的生成式摘要" class="headerlink" title="4.基于实体常识表示的生成式摘要"></a>4.基于实体常识表示的生成式摘要</h1><h2 id="4-1-论文名称"><a href="#4-1-论文名称" class="headerlink" title="4.1 论文名称"></a>4.1 论文名称</h2><p>2018 NAACL：<u><a href="https://arxiv.org/abs/1806.05504" target="_blank" rel="noopener">Entity Commonsense Representation for Neural Abstractive Summarization</a></u>  </p>
<h2 id="4-2-动机"><a href="#4-2-动机" class="headerlink" title="4.2 动机"></a>4.2 动机</h2><p>一篇文章摘要大部分都会包含一些有价值的实体，通过这些实体可以描绘出文章的主题，如果将这些实体链接到知识当中便可以获得常识信息，通过这些外部的常识信息便可以更好地产生摘要。<br><img src="/images/KGforSUM/30.jpg" alt="动机"><br>例如这张图中，O1部分表示的是文章摘要中所包含的实体，O2部分则表示实体可以用于描绘主题，每个实体在最终的主题中都有一个占比，O3部分则代表从大量语料库中得到的实体的常识信息可以被利用。  </p>
<h2 id="4-3-模型"><a href="#4-3-模型" class="headerlink" title="4.3 模型"></a>4.3 模型</h2><p><img src="/images/KGforSUM/31.jpg" alt="模型"><br>首先来解释一下整体流程，输入原文一方面通过实例链接系统<u><a href="http://dexter.isti.cnr.it/" target="_blank" rel="noopener">Dexter</a></u>获取链接后的实体，这些实体通过1000维的<u><a href="https://github.com/idio/wiki2vec" target="_blank" rel="noopener">wiki2vec</a></u>进行初始化，得到了实体①②③④⑤⑥；另一方面使用双向GRU来编码原文，得到原文的表示s。<br>接着对于所有抽取出来的实体计算它们消歧过后的表示，再挑选最有用的k个实体，并计算原文对于它们的atttention，并以此得到主题向量t（entity2topic，E2T），即为图中绿色部分。<br>在标准的encoder-decoder解码过程中的每一步中，将隐层的状态与主题向量t拼接再进行解码。  </p>
<h3 id="4-3-1-实体消歧"><a href="#4-3-1-实体消歧" class="headerlink" title="4.3.1 实体消歧"></a>4.3.1 实体消歧</h3><p>实体链接系统所链接的实体有可能还是有歧义的，因此有了消歧的步骤，具体地，分为两种消歧方法：<br>（1）使用全局的实体信息来消歧<br>这种情况下，我们把每个实体的表示按照实体在原文中出现的顺序用双向GRU编码一遍，前向与后向的隐层状态拼接就是该实体消歧后的表示：<br><img src="/images/KGforSUM/32.jpg" alt="全局实体消歧"><br>（2）使用局部的实体信息消歧<br>使用当前实体周围的实体来获取消歧后的表示，太远的实体不去考虑，使用的是基于CNN的模型：<br><img src="/images/KGforSUM/33.jpg" alt="局部实体消歧"><br>相当于用当前实体周围共h个实体来消歧当前实体，将这些实体统一经过一层卷积再经过一个非线性的激活函数，需要注意的是，两头的实体消歧时需要进行填充。  </p>
<p>最后作者发现，当输入原文本比较短的时候（例如一句话），这两种消歧实体的方法效果差不多，而当输入原文本比较长的时候（例如一个文档），那么基于CNN的方法更好一点，因为基于CNN的局部消歧办法忽略了非常远的实体之间的影响，这些影响会带来比较大的噪声。由此我们可以通过两种方法得到每个实体消歧之后的表示，那么又有一个问题，每个实体真的都需要消歧么？当然不是，有些实体明明表示的很确切，这时候消歧反而会使得效果下降，因此有了选择消歧机制。</p>
<h3 id="4-3-2-选择消歧机制"><a href="#4-3-2-选择消歧机制" class="headerlink" title="4.3.2 选择消歧机制"></a>4.3.2 选择消歧机制</h3><p><img src="/images/KGforSUM/34.jpg" alt="选择消歧机制"><br>如上图所示，右上部分为基于RNN的全局消歧，右下部分为基于CNN的局部消歧。左边部分是选择消歧机制，可以结合如下数学公式理解：<br><img src="/images/KGforSUM/35.jpg" alt="选择消歧机制公式"><br>首先ei是实体的原始表示，e’是消歧后的表示，d是根据e’计算的一个权重代表不消歧的占比，最终的实体在通过选择消歧机制之后的表示是将原始实体表示ei与消歧后的表示e’结合得到的。  </p>
<h3 id="4-3-3-产生主题向量"><a href="#4-3-3-产生主题向量" class="headerlink" title="4.3.3 产生主题向量"></a>4.3.3 产生主题向量</h3><p>通过上步得到的实体表示，我们称为最终实体表示，在产生主题向量阶段，我们就是要通过这些最终实体表示来产生一个主题向量t，那么又有一个问题产生，所有的最终实体向量都要参与到主题向量的计算么？答案是否定的，有一些实体它可能与主题密切相关，例如如果存在实体“姚明”，我们大概就知道这篇文章大概率和体育或者篮球相关，而有些实体则并不会对主题产生很大的影响，例如实体“猕猴桃”，我们并不能够通过这一实体对主题进行推断，它有可能是文章中的某个人吃了“猕猴桃”，有可能是发生了一件盗窃事故，还有可能是拉“猕猴桃”的运输车出现了故障，甚至有可能是一篇关于“猕猴桃”的科普文。   </p>
<p>因此我们应该选择最重要的k个实体，用他们的最终实体表示来组成主题向量t：<br><img src="/images/KGforSUM/36.jpg" alt="构建主题向量"><br>其中s向量是文章的表示（由双向GRU提取），故文章的内容会影响到主题向量的计算，K = top_k（G）是从G矩阵中得到top k向量的索引，P是指一个稀疏的向量，该向量在top k向量的索引上值为0，其余值为负无穷。然后就是计算top k个实体的权重，其余实体因为被附加了一个负无穷会得到几乎可以忽略的权重，而这top k个实体的最终表示则会纳入最后的主题向量的计算中。</p>
<h3 id="4-3-4-融入主题向量的解码过程"><a href="#4-3-4-融入主题向量的解码过程" class="headerlink" title="4.3.4 融入主题向量的解码过程"></a>4.3.4 融入主题向量的解码过程</h3><p>再介绍融入主题向量的解码过程之前，我们先来看一下<strong>没有</strong>融入主题向量的一般解码步骤，还是用的GRU：<br><img src="/images/KGforSUM/37.jpg" alt="GRU decoder"><br>w是上一步中解码得到的token，s表示隐层表示，c则代表上下文向量，它的计算使用到了注意力机制：<br><img src="/images/KGforSUM/38.jpg" alt="上下文向量计算"><br>最后解码出下一个token：<br><img src="/images/KGforSUM/39.jpg" alt="解码">   </p>
<p>而融入了主题向量t之后的解码步骤为：<br><img src="/images/KGforSUM/40.jpg" alt="解码"><br><img src="/images/KGforSUM/41.jpg" alt="解码">   </p>
<h2 id="4-4-实验结果"><a href="#4-4-实验结果" class="headerlink" title="4.4 实验结果"></a>4.4 实验结果</h2><p><img src="/images/KGforSUM/42.jpg" alt="实验结果"><br><img src="/images/KGforSUM/43.jpg" alt="实验结果"><br><img src="/images/KGforSUM/44.jpg" alt="实验结果">  </p>
<h1 id="5-基于多源指针网络的摘要生成"><a href="#5-基于多源指针网络的摘要生成" class="headerlink" title="5.基于多源指针网络的摘要生成"></a>5.基于多源指针网络的摘要生成</h1><blockquote>
<p>相关推文：<u><a href="https://zhuanlan.zhihu.com/p/89618028" target="_blank" rel="noopener">《知识图谱如何助力文本摘要生成》</a></u></p>
</blockquote>
<h2 id="5-1-论文名称"><a href="#5-1-论文名称" class="headerlink" title="5.1 论文名称"></a>5.1 论文名称</h2><p>2018 CIKM：<u><a href="https://arxiv.org/abs/1808.06885" target="_blank" rel="noopener">Multi-Source Pointer Network for Product Title Summarization </a></u>   </p>
<h2 id="5-2-动机"><a href="#5-2-动机" class="headerlink" title="5.2 动机"></a>5.2 动机</h2><p>这篇主要的目的是在电商平台上为一个产品生成标题摘要（没错就是阿里团队的）。在为一个产品生成标题摘要中有两点需要特别注意：①不能引入不相关的信息②保留关键信息。为了解决这一问题，提出了一个多源指针网络，该网络向指针网络中添加了知识encoder。<br>第一个问题通过指针机制解决，从商品的源标题中通过copy来获得短小版的标题摘要；第二个问题通过从知识encoder中复制关键信息来解决，该过程需要soft gating机制。</p>
<h2 id="5-3-模型"><a href="#5-3-模型" class="headerlink" title="5.3 模型"></a>5.3 模型</h2><p><img src="/images/KGforSUM/45.jpg" alt="模型"><br>其实就是对比于pointer-generator来说，这里用到了两个指针网络，一个指针网络直接从源标题中复制词汇，而另外一个指针网络称为知识encodder，用来从核心信息（商品名称、品牌名称等）当中复制词汇。至于为什么要这么做，是因为只在源标题上使用一个指针网络的时候，作者发现时不时地就会忽略到核心信息（商品名称、品牌名称），如果忽略掉这部分信息肯定是相当致命的。所以就加强了核心信息的关键提取，也就是使用了这个知识encoder。<br>（这篇因为垂直领域就不细看了，将来有相关任务的话再拾起来2333）</p>
<h2 id="5-4-实验结果"><a href="#5-4-实验结果" class="headerlink" title="5.4 实验结果"></a>5.4 实验结果</h2><p>用的数据集是从淘宝上得到的，然后其实并没有公开的benchmark。于是作者分别跑了一些经典的摘要模型。<br><img src="/images/KGforSUM/46.jpg" alt="实验结果">   </p>
<h2 id="5-5-补充说明"><a href="#5-5-补充说明" class="headerlink" title="5.5 补充说明"></a>5.5 补充说明</h2><p>值得一提的是，我们其实可以在很多垂直领域应用这个算法，在本篇论文的<u><a href="https://zhuanlan.zhihu.com/p/89618028" target="_blank" rel="noopener">相关推文</a></u>当中有介绍：  </p>
<blockquote>
<p>特别对于垂直领域语料，模型准确生成一个领域实体词的价值远大于生成流畅的废话，本文是用于生成商品描述，我们则是用在医疗数据集上，目的都是让生成结果尽可能涵盖关键信息。相比于上面concat的做法，这里再用一次attention叠加的效果更明显。</p>
</blockquote>
<p>这也给我们了非常重要的启发，它比较好的解决了“如何在摘要生成中让模型不忽略核心信息？”</p>
<h1 id="6-结合局部和全局图信息生成更高质量的文本"><a href="#6-结合局部和全局图信息生成更高质量的文本" class="headerlink" title="6.结合局部和全局图信息生成更高质量的文本"></a>6.结合局部和全局图信息生成更高质量的文本</h1><blockquote>
<p>相关推文：<u><a href="http://url.cn/5jHjtVG" target="_blank" rel="noopener">《从知识图谱到文本：结合局部和全局图信息生成更高质量的文本》</a></u></p>
</blockquote>
<h2 id="6-1-论文名称"><a href="#6-1-论文名称" class="headerlink" title="6.1 论文名称"></a>6.1 论文名称</h2><p>2020 arxiv：<u><a href="https://arxiv.org/abs/2001.11003" target="_blank" rel="noopener">Modeling Global and Local Node Contexts for Text Generation from Knowledge Graphs</a></u><br>code：<a href="https://github.com/UKPLab/kg2text" target="_blank" rel="noopener">https://github.com/UKPLab/kg2text</a></p>
<h2 id="6-2-动机"><a href="#6-2-动机" class="headerlink" title="6.2 动机"></a>6.2 动机</h2><p>背景任务是从知识图谱生成文本（KG2Text），已有的方法要么利用了全局信息，要么利用了局部信息。利用全局信息，考虑了任意两个节点之间的影响，因此忽略了图的结构（因为它直接让所有点相连了）；而使用局部信息的方法则忽略了长距离依赖。所以作者直接搞了一个新的模型同时考虑全局信息与局部信息。</p>
<h2 id="6-3-模型"><a href="#6-3-模型" class="headerlink" title="6.3 模型"></a>6.3 模型</h2><h3 id="6-3-1-Global-Graph-Encoder"><a href="#6-3-1-Global-Graph-Encoder" class="headerlink" title="6.3.1 Global Graph Encoder"></a>6.3.1 Global Graph Encoder</h3><p>全局图编码器利用全局的信息更新每个节点的表示：<br><img src="/images/KGforSUM/47.jpg" alt="全局信息"><br>其具体的计算过程其实就是self-attention那一套：<br><img src="/images/KGforSUM/48.jpg" alt="全局信息计算"><br>（1）式就是对所有结点做了一个特征的结合，结合的权重由（2）式、（3）式计算，（3）式其实就是查询向量乘以键值向量。（4）式是多头注意力机制，（5）式是残差连接和前馈网络计算。由此可见，使用到了全局的所有节点来更新某一节点的表示。也忽略了图的结构。  </p>
<h3 id="6-3-2-Local-Graph-Encoder"><a href="#6-3-2-Local-Graph-Encoder" class="headerlink" title="6.3.2 Local Graph Encoder"></a>6.3.2 Local Graph Encoder</h3><p>仅利用相邻的信息更新每个节点的表示：<br><img src="/images/KGforSUM/49.jpg" alt="局部信息"><br>具体的计算过程如下：<br><img src="/images/KGforSUM/50.jpg" alt="局部信息计算"><br>其计算过程使用到了相邻的节点和关系，Wr矩阵编码了相邻结点之间的关系。</p>
<h3 id="6-3-3-更改图谱为更细粒度"><a href="#6-3-3-更改图谱为更细粒度" class="headerlink" title="6.3.3 更改图谱为更细粒度"></a>6.3.3 更改图谱为更细粒度</h3><p>将一个实体表示为一组节点，利用原有的KG创建了一个新的KG，每个实体中的每个token都变成了一个节点，将原有实体之间的边变成了一组边，例如在原先的KG中有一个三元组（“王佳安”，就读于，“苏州大学”），包含了两个节点“王佳安”、“苏州大学”和一条边“就读于”，现在将节点拆分为“王”、“佳”、“安”、“苏”、“州”、“大”、“学”，并且“王”“佳”“安”中的每一个都与“苏”“州”“大”“学”中的每一个字符相连接，边还是“就读于”。<br>改进后的KG提升了模型的表示能力，因为其可以在token-level学习embedding。</p>
<h3 id="6-3-4-结合全局信息与局部信息"><a href="#6-3-4-结合全局信息与局部信息" class="headerlink" title="6.3.4 结合全局信息与局部信息"></a>6.3.4 结合全局信息与局部信息</h3><p>（1）并行图编码（PGE）<br><img src="/images/KGforSUM/51.jpg" alt="并行图编码"><br>全局与局部信息并行获取，可以有不同的encoder layer，之后再做拼接。<br><img src="/images/KGforSUM/52.jpg" alt="并行图编码"><br>（2）级联图编码（CGE）<br><img src="/images/KGforSUM/53.jpg" alt="级联图编码"><br>先利用全局信息更新节点表示再利用局部信息更新节点表示。<br>（3）分层并行和级联图编码<br><img src="/images/KGforSUM/54.jpg" alt="分层图编码"><br>每一层都集合了全局信息与局部信息，根据结合的方式又分为两种情况，一种是并行的，一种是串行的。  </p>
<h3 id="6-3-5-解码器"><a href="#6-3-5-解码器" class="headerlink" title="6.3.5 解码器"></a>6.3.5 解码器</h3><p>解码器就用的transformer decoder。 </p>
<h2 id="6-4-实验结果"><a href="#6-4-实验结果" class="headerlink" title="6.4 实验结果"></a>6.4 实验结果</h2><p><img src="/images/KGforSUM/55.jpg" alt="实验结果"><br>其中PGE是fully parallel encoder、CGE是fully cascaded encoder、PGE-LW是layer-wise parallel encoder、CGE-LW是layer-wise cascaded encoder。分别对应6.3.4中的四种方式。  </p>
<p>与其他模型的对比结果：<br><img src="/images/KGforSUM/56.jpg" alt="实验结果"><br>其中CGE-RP是将关系编码成模型参数，CGE-LG使用Levi graphs作为输入，它使用的参数比较少。</p>
<h1 id="7-在Data-to-Text任务中使用分步策略"><a href="#7-在Data-to-Text任务中使用分步策略" class="headerlink" title="7.在Data-to-Text任务中使用分步策略"></a>7.在Data-to-Text任务中使用分步策略</h1><blockquote>
<p>相关介绍：<u><a href="https://zhuanlan.zhihu.com/p/82765731" target="_blank" rel="noopener">《Step-by-Step》阅读笔记</a></u></p>
</blockquote>
<h2 id="7-1-论文名称"><a href="#7-1-论文名称" class="headerlink" title="7.1 论文名称"></a>7.1 论文名称</h2><p>2019 NAACL：<u><a href="https://arxiv.org/abs/1904.03396" target="_blank" rel="noopener">Step-by-Step: Separating Planning from Realization in Neural Data-to-Text Generation</a></u></p>
<h2 id="7-2-动机"><a href="#7-2-动机" class="headerlink" title="7.2 动机"></a>7.2 动机</h2><p>背景任务是使用描述事实的RDF三元组去产生流畅的文本数据，以往的方法基本都是端到端的学习，直接从三元组去训练一个产生最终输出的网络，这样的算法在流畅度方面还可以，但在内容选择和对输入的置信度方面却不尽人意。作者认为，应该分成两部分。第一部分称为text planning，用来排序和构建信息；第二部分是plan realization，用来从已构建的信息中表达最终的文本。 </p>
<h2 id="7-3-流程"><a href="#7-3-流程" class="headerlink" title="7.3 流程"></a>7.3 流程</h2><p><img src="/images/KGforSUM/57.jpg" alt="流程框架"><br>首先（a）是原始输入，是一些RDF三元组；（b）是第一部分（text planning）用于排序和构建信息，是一个非神经网络的结构；（c）是（b）的线性表示形式；（d）是第二部分（plan realization）用于产生最终的输出，其中使用到了NMT系统。  </p>
<h3 id="7-3-1-Text-Planning"><a href="#7-3-1-Text-Planning" class="headerlink" title="7.3.1 Text Planning"></a>7.3.1 Text Planning</h3><blockquote>
<p>这一部分的任务是将事实划分成句子，以及确定每个句子当中的表达顺序以及句子间的顺序。  </p>
</blockquote>
<p><img src="/images/KGforSUM/58.jpg" alt="例子"><br>上图是最终生成的结果，其中规定好了句子的顺序，句中实体出现的顺序。</p>
<h3 id="7-3-2-Plan-Realization"><a href="#7-3-2-Plan-Realization" class="headerlink" title="7.3.2 Plan Realization"></a>7.3.2 Plan Realization</h3><blockquote>
<p>这一部分将上一部分最终生成的结果进行翻译，使用了现有的NMT（neural machine translation）系统。  </p>
</blockquote>
<p><img src="/images/KGforSUM/60.jpg" alt="例子">  </p>
<h2 id="7-4-实验结果"><a href="#7-4-实验结果" class="headerlink" title="7.4 实验结果"></a>7.4 实验结果</h2><p><img src="/images/KGforSUM/59.jpg" alt="实验结果"><br>本文模型称为BestPlan</p>

            </div>

            <!-- Post Comments -->
            

        </div>
        <!-- Copyright 版权 start -->
                <div id="copyright">
            <ul>
                <li>&copy;2020 北望你的安. 版权所有</li>
            </ul>
            
                <span id="busuanzi_container_site_pv">本站总访问量<span id="busuanzi_value_site_pv"></span>次，</span>
				<span id="busuanzi_container_site_uv"> 访客数 <span id="busuanzi_value_site_uv"></span> 人. </span>
			
			<br>
			<span>友情链接：<a href='http://www.demilab.cn' target='_blank'>DEMI实验室</a>&nbsp;&nbsp;&nbsp;<a href='http://zd11024.cn/' target='_blank'>ZD</a></span>
        </div>
    </div>
</body>



 	
</html>
